package com.dkm.orproject.dkmoa.dao;

import com.dkm.orproject.dkmoa.domain.OaVote;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 投票mapper
 * @Author 易嵘
 * @Date: 2020/11/26 10点01分
 */
@Mapper
public interface OaVoteMapper {
    /**
     * id删除
     * @param pkVoteId 投票id
     * @return 回调函数
     */
    int deleteByPrimaryKey(Long pkVoteId);

    /**
     * 新增
     * @param record 投票模型
     * @return 回调函数
     */
    int insert(OaVote record);

    /**
     * 条件新增
     * @param record 投票模型
     * @return 回调函数
     */
    int insertSelective(OaVote record);

    /**
     * id查询
     * @param pkVoteId 投票id
     * @return 投票模型
     */
    OaVote selectByPrimaryKey(Long pkVoteId);

    /**
     * 条件修改
     * @param record 投票模型
     * @return 回调函数
     */
    int updateByPrimaryKeySelective(OaVote record);

    /**
     * 修改
     * @param record 投票模型
     * @return 回调函数
     */
    int updateByPrimaryKey(OaVote record);

    /**
     * 总行数
     * @param voteName 投票名称
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param pkPersonnelId
     * @return 总行数
     */
    Long rowCount(@Param("voteName") String voteName, @Param("startDate") String startTime, @Param("endDate") String endTime,@Param("pkPersonnelId") Long pkPersonnelId);

    /**
     * 分页查询
     * @param voteName 投票模型
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param pkPersonnelId
     * @return 查询集合
     */
    List<OaVote> findAll(@Param("voteName") String voteName, @Param("startDate") String startTime, @Param("endDate") String endTime,@Param("pkPersonnelId") Long pkPersonnelId);

    /**
     * 批量删除
     * @param list 投票id集合
     * @return 回调函数
     */
    int deleteAll(@Param("list") List<Long> list);

    /**
     * 批量查询
     * @param list 投票id集合
     * @return 查询结果
     */
    List<OaVote> selectAll(@Param("list") List<Long> list);

    /**
     * 判断是否已投票
     * @param voteId 投票id
     * @param pkPersonnelId 操作人id
     * @return 0未投票，1已投票
     */
    Integer isVote(@Param("voteId") Long voteId,@Param("pkPersonnelId") Long pkPersonnelId);


    /**
     * 投票总人数
     * @param voteId 投票id
     * @return 投票总人数
     */
    Integer rowAll(@Param("voteId") Long voteId);

    /**
     * 查询投票选项投票人数
     * @param pkVoteOptionId 投票选项id
     * @return 投票选项投票人数
     */
    Integer voteRow(@Param("pkVoteOptionId") Long pkVoteOptionId);
}